<template>
  <div class="top-category">
    <div class="container">
      <!-- 面包屑 -->
      <XtxBread>
        <XtxBreadItem to="/">首页</XtxBreadItem>
        <!-- 创建动画 -->
        <transition name="fade-righ" mode="out-in">
          <XtxBreadItem :key="topCategory.id" v-if="topCategory">{{ topCategory.name }}</XtxBreadItem>
        </transition>
      </XtxBread>
      <!-- 轮播图 -->
      <XtxCarousel :sliders="sliders" autoPlay style="height:500px" />
      <!-- 所有二级分类 -->
      <div class="sub-list" v-if="topCategory && topCategory.children">
        <h3>全部分类</h3>
        <ul>
          <li v-for="sub in topCategory.children" :key="sub.id">
            <a href="javascript:;">
              <img :src="sub.picture">
              <p>{{ sub.name }}</p>
            </a>
          </li>
        </ul>
      </div>
      <!-- 分类关联商品 -->
      <div class="ref-goods" v-for="item in subList" :key="item.id">
        <div class="head">
          <h3>- {{ item.name }} -</h3>
          <p class="tag">{{ item.desc }}</p>
          <!-- 查看全部 -->
          <XtxMore :path="`/category/sub/${item.id}`" />
        </div>
        <div class="body">
          <GoodsItem v-for="goods in item.goods" :key="goods.id" :goods='goods' />
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import { findBanner } from '@/api/home'
import { ref, computed, watch } from 'vue'
import { useStore } from 'vuex'
import { useRoute } from 'vue-router'
//组件引入
import GoodsItem from '@/views/category/components/goods-item'
//导入请求的接口
import { findTopCategory } from '@/api/category'
export default {
  name: "Category",
  components: {
    GoodsItem
  },
  setup() {

    // 轮播图
    const sliders = ref([])
    findBanner().then(data => {
      sliders.value = data.result
    })

    //面包屑 + 所有子分类 (根据当前路由的Id 在vuex中查找相应的数据)
    const store = useStore()
    const route = useRoute()
    const topCategory = computed(() => {
      return store.state.category.list.find(item => {
        return item.id === route.params.id
      })
    })

    //根据当前路由的ID 发送相应的数据请求获取各个分类下的推荐信息
    const subList = ref([])


    watch(() => route.params.id, (newValue) => {
      if (newValue && `/category/${newValue}` === route.path) {
        findTopCategory(newValue).then((data) => {
          subList.value = data.result.children
        })
      }
    }, { immediate: true })

    return {
      sliders,
      topCategory,
      subList
    }
  }

}
</script>

<style lang="less" scoped>
// 面包屑动画
.fade-righ-enter-from,
.fade-righ-leave-to {
  transform: translateX(20px);
  opacity: 0;
}

.fade-righ-enter-active,
.fade-righ-leave-active {
  transition: all 0.5s;
}

.fade-righ-enter-to,
.fade-righ-leave-from {
  transform: none;
  opacity: 1;
}

.top-category {
  h3 {
    font-size: 28px;
    color: #666;
    font-weight: normal;
    text-align: center;
    line-height: 100px;
  }

  .sub-list {
    margin-top: 20px;
    background-color: #fff;

    ul {
      display: flex;
      padding: 0 32px;
      flex-wrap: wrap;

      li {
        width: 168px;
        height: 160px;

        a {
          text-align: center;
          display: block;
          font-size: 16px;

          img {
            width: 100px;
            height: 100px;
          }

          p {
            line-height: 40px;
          }

          &:hover {
            color: @xtxColor;
          }
        }
      }
    }
  }
}

//推荐商品
.ref-goods {
  background-color: #fff;
  margin-top: 20px;
  position: relative;

  .head {
    .xtx-more {
      position: absolute;
      top: 20px;
      right: 20px;
    }

    .tag {
      text-align: center;
      color: #999;
      font-size: 20px;
      position: relative;
      top: -20px;
    }
  }

  .body {
    display: flex;
    justify-content: flex-start;
    flex-wrap: wrap;
    padding: 0 65px 30px;
  }
}
</style>